package Thread;
//进行线程不同状态的观察；
//①：NEW=>new；在线程启动前的状态；
//②：RUNNABLE=>runnable;在线程执行过程中的状态；
//③：WAITING=>waiting;当线程中有无限期的等待时间时：就会形成此状态；
//④：TIME_WAITING=>time_waiting;当调用向sleep等有超时时间限制的阻塞方法的时候就会出现此种状态；
public class Demo15 {
    public static void main(String[] args) throws InterruptedException {
        Thread minThread=Thread.currentThread();
        Thread t=new Thread(()->{
//            for(int i=0;i<3;i++){
//                System.out.println("hello thread");
//                    try {
//                        Thread.sleep(10000);
//                    } catch (InterruptedException e) {
//                        throw new RuntimeException(e);
//                    }
//            }
            try {
                minThread.join();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        });
        //在进行启动t线程之前进行判断线程此时的状态是什么？
        System.out.println(t.getState());
        //进行线程的启动；
        t.start();
        //进行设置sleep让线程执行期间休眠，观察线程此时的状态；
        Thread.sleep(500);
        System.out.println(t.getState());
        //进行让主线程等待t线程执行完后进行执行；
        t.join();
        //进行观察t线程执行完毕线程的状态是什么？
        System.out.println(t.getState());//TERMINATED=>terminated;/

    }
}
